//
// Created by sjjmw on 3/24/2022.
//
#include "iostream"
#include "vector"
#include "list"
#include "algorithm"
#include "string"
#include "unordered_map"
#include "cmath"
#include<iomanip>
#include "string"
#include "map"
struct Sol{
    std::vector<char> buf;
    bool iszhishu(int n){
        if(n==1){
            return false;
        }
        if(n==2){
            return true;
        }
        for(int i=2;i*i<=n;i++){
            if(n%i==0){
                return false;
            }
        }
        return true;
    }
    void handle(int k){
        buf.resize(2000000);
        buf[1]= true;
        int zs_cnt=0;
        int cj=1;
        for(int i=1;i<buf.size();i++){
            if(!buf[i]&& iszhishu(i)){
                zs_cnt++;
                cj*=(i%50000);
                cj%=50000;
                if(zs_cnt==k){
                    break;
                }
                for(int j=2*i;j<buf.size();j+=i){
                    buf[j]=true;
                }
            }
        }
        printf("%d\n",cj);
    }
};
int main(){
    int a,b,c;
//    std::string str;
    while (std::cin>>a){
        Sol().handle(a);
    }
    return 0;
}